home *** CD-ROM | disk | FTP | other *** search
- { Profiler-Testversion zu A:\DEMOS.PAS\TALER.PAS }
-
- CONST ___ = 79;
- ___2 =5;
- VAR __ : INTEGER ;
- VAR _ : ARRAY [1..___] OF REAL ;
- VAR _2 : ARRAY [1..___2] OF REAL ;
- VAR _h : STRING;
- VAR _f : TEXT;
- { 7. Bundeswettbewerb Informatik 1988/1989 }
- { 1. Runde, Aufgabe 3 ; Autor M. Berger }
- { Bitte Hinweise am Ende beachten ! }
- CONST MAX_ANZAHL_GOLDSTUECKE=100;
- MAX_ANZAHL_ERBEN=10;
- TYPE GELDKISTE=ARRAY[1..MAX_ANZAHL_GOLDSTUECKE]OF
- INTEGER;
- VAR GOLDSTUECKE:GELDKISTE;
- ANZAHL_GOLDSTUECKE:INTEGER;
- ANZAHL_ERBEN:INTEGER;
- PROCEDURE EINGABE;
- BEGIN _[8] := _[8] + 1 ; _2[1] := _2[1] + 1 ;
- CLRSCR ; WRITELN('Erbteilung (bwINF 7 [88/89];Aufgabe 2)') ; WRITELN ;
- WRITELN ; WRITE(' Bitte Anzahl Erben(Erbinnen) eingeben : ') ;
- REPEAT _[10] := _[10] + 1 ;
- READLN(ANZAHL_ERBEN); _[5]:=_[5]+1;
- IF ANZAHL_ERBEN<_[6] THEN _[6]:=ANZAHL_ERBEN;
- IF ANZAHL_ERBEN>_[7] THEN _[7]:=ANZAHL_ERBEN; ;
- UNTIL ANZAHL_ERBEN<MAX_ANZAHL_ERBEN; _[5]:=_[5]+1;
- IF ANZAHL_ERBEN<_[6] THEN _[6]:=ANZAHL_ERBEN;
- IF ANZAHL_ERBEN>_[7] THEN _[7]:=ANZAHL_ERBEN; ;
- WRITELN ; WRITELN(' Bitte Werte der Münzen eingeben (Ende mit <RETURN>)') ;
- ANZAHL_GOLDSTUECKE:=0; _[2]:=_[2]+1;
- IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE;
- IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE; ;
- REPEAT _[11] := _[11] + 1 ;
- ANZAHL_GOLDSTUECKE:=ANZAHL_GOLDSTUECKE+1; _[2]:=_[2]+1;
- IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE;
- IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE; ;
- WRITE(' ->') ;
- READLN(GOLDSTUECKE[ANZAHL_GOLDSTUECKE]); _[2]:=_[2]+1;
- IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE;
- IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE; _[1]:=_[1]+1; ;
- UNTIL(GOLDSTUECKE[ANZAHL_GOLDSTUECKE]=0)OR
- (ANZAHL_GOLDSTUECKE>MAX_ANZAHL_GOLDSTUECKE); _[2]:=_[2]+1;
- IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE;
- IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE; _[1]:=_[1]+1; ;
- ANZAHL_GOLDSTUECKE:=ANZAHL_GOLDSTUECKE-1; _[2]:=_[2]+1;
- IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE;
- IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE; ;
- WRITELN ; WRITELN ; CLRSCR ;
- ;IF _2[1] > _[9] THEN _[9] := _2[1]; _2[1]:=_2[1]-1; END ;
- PROCEDURE AUFTEILUNG;
- VAR I,U:INTEGER;
- JEDER_ERBT:INTEGER;
- AKT_ERBE:INTEGER;
- ERGEBNISS_GEFUNDEN:BOOLEAN;
- HILFSARRAY:GELDKISTE;
- FUNCTION ERMITTLE_DURCHSCHNITTL_ERBE:REAL;
- VAR I:INTEGER;
- HILFSUMME:REAL;
- BEGIN _[28] := _[28] + 1 ; _2[2] := _2[2] + 1 ;
- HILFSUMME:=0; _[33]:=_[33]+1; IF HILFSUMME<_[34] THEN _[34]:=HILFSUMME;
- IF HILFSUMME>_[35] THEN _[35]:=HILFSUMME; ;
- FOR I:=1 TO ANZAHL_GOLDSTUECKE DO BEGIN _[36] := _[36] + 1 ;
- HILFSUMME:=HILFSUMME+GOLDSTUECKE[I]; _[30]:=_[30]+1;
- IF I<_[31] THEN _[31]:=I; IF I>_[32] THEN _[32]:=I; _[1]:=_[1]+1;
- _[33]:=_[33]+1; IF HILFSUMME<_[34] THEN _[34]:=HILFSUMME;
- IF HILFSUMME>_[35] THEN _[35]:=HILFSUMME; ;
- END; _[2]:=_[2]+1;
- IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE;
- IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE; _[30]:=_[30]+1;
- IF I<_[31] THEN _[31]:=I; IF I>_[32] THEN _[32]:=I; ;
- HILFSUMME:=HILFSUMME/ANZAHL_ERBEN; _[5]:=_[5]+1;
- IF ANZAHL_ERBEN<_[6] THEN _[6]:=ANZAHL_ERBEN;
- IF ANZAHL_ERBEN>_[7] THEN _[7]:=ANZAHL_ERBEN; _[33]:=_[33]+1;
- IF HILFSUMME<_[34] THEN _[34]:=HILFSUMME;
- IF HILFSUMME>_[35] THEN _[35]:=HILFSUMME; ;
- ERMITTLE_DURCHSCHNITTL_ERBE:=HILFSUMME; _[33]:=_[33]+1;
- IF HILFSUMME<_[34] THEN _[34]:=HILFSUMME;
- IF HILFSUMME>_[35] THEN _[35]:=HILFSUMME; ;
- ;IF _2[2] > _[29] THEN _[29] := _2[2]; _2[2]:=_2[2]-1; END ;
- PROCEDURE TESTE(UEBRIGE:GELDKISTE;
- GENOMMENE:GELDKISTE;
- ANZ_GENOMM:INTEGER;
- SUMME:INTEGER;
- STELLE:INTEGER);
- VAR I:INTEGER;
- ZAHL:INTEGER;
- PROCEDURE AUSGABE;
- VAR I,U:INTEGER;
- BEGIN _[56] := _[56] + 1 ; _2[3] := _2[3] + 1 ;
- WRITELN('Es erbt Erbe Nr. ',AKT_ERBE,' die Münzen : '); _[23]:=_[23]+1;
- IF AKT_ERBE<_[24] THEN _[24]:=AKT_ERBE;
- IF AKT_ERBE>_[25] THEN _[25]:=AKT_ERBE; ;
- WRITE(' ') ;
- FOR I:=1 TO ANZ_GENOMM DO BEGIN _[64] := _[64] + 1 ;
- IF I>1 THEN BEGIN _[65] := _[65] + 1 ; WRITE(',') END ;
- WRITE(GENOMMENE[I]); _[40]:=_[40]+1; _[58]:=_[58]+1;
- IF I<_[59] THEN _[59]:=I; IF I>_[60] THEN _[60]:=I; ;
- END; _[41]:=_[41]+1; IF ANZ_GENOMM<_[42] THEN _[42]:=ANZ_GENOMM;
- IF ANZ_GENOMM>_[43] THEN _[43]:=ANZ_GENOMM; _[58]:=_[58]+1;
- IF I<_[59] THEN _[59]:=I; IF I>_[60] THEN _[60]:=I; ;
- WRITELN('. Summe = ',SUMME); _[44]:=_[44]+1;
- IF SUMME<_[45] THEN _[45]:=SUMME; IF SUMME>_[46] THEN _[46]:=SUMME; ;
- WRITELN ;
- FOR I:=1 TO ANZAHL_GOLDSTUECKE DO BEGIN _[66] := _[66] + 1 ;
- GOLDSTUECKE[I]:=UEBRIGE[I]; _[39]:=_[39]+1; _[58]:=_[58]+1;
- IF I<_[59] THEN _[59]:=I; IF I>_[60] THEN _[60]:=I; _[1]:=_[1]+1; END ;
- _[2]:=_[2]+1; IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE;
- IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE; _[58]:=_[58]+1;
- IF I<_[59] THEN _[59]:=I; IF I>_[60] THEN _[60]:=I; ;
- ;IF _2[3] > _[57] THEN _[57] := _2[3]; _2[3]:=_2[3]-1; END ;
- BEGIN _[37] := _[37] + 1 ; _2[4] := _2[4] + 1 ;
- ZAHL:=UEBRIGE[STELLE]; _[47]:=_[47]+1; IF STELLE<_[48] THEN _[48]:=STELLE;
- IF STELLE>_[49] THEN _[49]:=STELLE; _[39]:=_[39]+1; _[53]:=_[53]+1;
- IF ZAHL<_[54] THEN _[54]:=ZAHL; IF ZAHL>_[55] THEN _[55]:=ZAHL; ;
- IF NOT(ERGEBNISS_GEFUNDEN)THEN BEGIN _[67] := _[67] + 1 ;
- SUMME:=SUMME+ZAHL; _[53]:=_[53]+1; IF ZAHL<_[54] THEN _[54]:=ZAHL;
- IF ZAHL>_[55] THEN _[55]:=ZAHL; _[44]:=_[44]+1;
- IF SUMME<_[45] THEN _[45]:=SUMME; IF SUMME>_[46] THEN _[46]:=SUMME; ;
- IF SUMME<=JEDER_ERBT THEN BEGIN _[68] := _[68] + 1 ;
- UEBRIGE[STELLE]:=0; _[47]:=_[47]+1; IF STELLE<_[48] THEN _[48]:=STELLE;
- IF STELLE>_[49] THEN _[49]:=STELLE; _[39]:=_[39]+1; ;
- ANZ_GENOMM:=ANZ_GENOMM+1; _[41]:=_[41]+1;
- IF ANZ_GENOMM<_[42] THEN _[42]:=ANZ_GENOMM;
- IF ANZ_GENOMM>_[43] THEN _[43]:=ANZ_GENOMM; ;
- GENOMMENE[ANZ_GENOMM]:=ZAHL; _[53]:=_[53]+1;
- IF ZAHL<_[54] THEN _[54]:=ZAHL; IF ZAHL>_[55] THEN _[55]:=ZAHL;
- _[41]:=_[41]+1; IF ANZ_GENOMM<_[42] THEN _[42]:=ANZ_GENOMM;
- IF ANZ_GENOMM>_[43] THEN _[43]:=ANZ_GENOMM; _[40]:=_[40]+1; ;
- IF SUMME<JEDER_ERBT THEN BEGIN _[69] := _[69] + 1 ;
- FOR I:=STELLE+1 TO ANZAHL_GOLDSTUECKE DO BEGIN _[70] := _[70] + 1 ;
- IF UEBRIGE[I]>0 THEN BEGIN _[71] := _[71] + 1 ;
- TESTE(UEBRIGE,GENOMMENE,ANZ_GENOMM,SUMME,I); _[50]:=_[50]+1;
- IF I<_[51] THEN _[51]:=I; IF I>_[52] THEN _[52]:=I; _[44]:=_[44]+1;
- IF SUMME<_[45] THEN _[45]:=SUMME; IF SUMME>_[46] THEN _[46]:=SUMME;
- _[41]:=_[41]+1; IF ANZ_GENOMM<_[42] THEN _[42]:=ANZ_GENOMM;
- IF ANZ_GENOMM>_[43] THEN _[43]:=ANZ_GENOMM; _[40]:=_[40]+1;
- _[39]:=_[39]+1; END ;
- ; _[50]:=_[50]+1; IF I<_[51] THEN _[51]:=I; IF I>_[52] THEN _[52]:=I;
- _[39]:=_[39]+1; END ; _[2]:=_[2]+1;
- IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE;
- IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE; _[47]:=_[47]+1;
- IF STELLE<_[48] THEN _[48]:=STELLE; IF STELLE>_[49] THEN _[49]:=STELLE;
- _[50]:=_[50]+1; IF I<_[51] THEN _[51]:=I; IF I>_[52] THEN _[52]:=I;
- END ELSE BEGIN _[72] := _[72] + 1 ;
- ERGEBNISS_GEFUNDEN:=TRUE; _[26]:=_[26]+1; ;
- AUSGABE ;
- END; _[20]:=_[20]+1; IF JEDER_ERBT<_[21] THEN _[21]:=JEDER_ERBT;
- IF JEDER_ERBT>_[22] THEN _[22]:=JEDER_ERBT; _[44]:=_[44]+1;
- IF SUMME<_[45] THEN _[45]:=SUMME; IF SUMME>_[46] THEN _[46]:=SUMME; ;
- END ;
- ; _[20]:=_[20]+1; IF JEDER_ERBT<_[21] THEN _[21]:=JEDER_ERBT;
- IF JEDER_ERBT>_[22] THEN _[22]:=JEDER_ERBT; _[44]:=_[44]+1;
- IF SUMME<_[45] THEN _[45]:=SUMME; IF SUMME>_[46] THEN _[46]:=SUMME; END ;
- ; _[26]:=_[26]+1;
- ;IF _2[4] > _[38] THEN _[38] := _2[4]; _2[4]:=_2[4]-1; END ;
- BEGIN _[12] := _[12] + 1 ; _2[5] := _2[5] + 1 ;
- IF ERMITTLE_DURCHSCHNITTL_ERBE=INT(ERMITTLE_DURCHSCHNITTL_ERBE)
- THEN BEGIN _[73] := _[73] + 1 ;
- JEDER_ERBT:=ROUND(ERMITTLE_DURCHSCHNITTL_ERBE); _[20]:=_[20]+1;
- IF JEDER_ERBT<_[21] THEN _[21]:=JEDER_ERBT;
- IF JEDER_ERBT>_[22] THEN _[22]:=JEDER_ERBT; ;
- AKT_ERBE:=0; _[23]:=_[23]+1; IF AKT_ERBE<_[24] THEN _[24]:=AKT_ERBE;
- IF AKT_ERBE>_[25] THEN _[25]:=AKT_ERBE; ;
- REPEAT _[74] := _[74] + 1 ;
- AKT_ERBE:=AKT_ERBE+1; _[23]:=_[23]+1;
- IF AKT_ERBE<_[24] THEN _[24]:=AKT_ERBE;
- IF AKT_ERBE>_[25] THEN _[25]:=AKT_ERBE; ;
- ERGEBNISS_GEFUNDEN:=FALSE; _[26]:=_[26]+1; ;
- U:=0; _[17]:=_[17]+1; IF U<_[18] THEN _[18]:=U; IF U>_[19] THEN _[19]:=U;
- ;
- FOR I:=1 TO ANZAHL_GOLDSTUECKE DO BEGIN _[75] := _[75] + 1 ;
- U:=U+GOLDSTUECKE[I]; _[14]:=_[14]+1; IF I<_[15] THEN _[15]:=I;
- IF I>_[16] THEN _[16]:=I; _[1]:=_[1]+1; _[17]:=_[17]+1;
- IF U<_[18] THEN _[18]:=U; IF U>_[19] THEN _[19]:=U; END ; _[2]:=_[2]+1;
- IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE;
- IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE; _[14]:=_[14]+1;
- IF I<_[15] THEN _[15]:=I; IF I>_[16] THEN _[16]:=I; ;
- IF U>=JEDER_ERBT THEN BEGIN _[76] := _[76] + 1 ;
- I:=0; _[14]:=_[14]+1; IF I<_[15] THEN _[15]:=I; IF I>_[16] THEN _[16]:=I;
- ;
- REPEAT _[77] := _[77] + 1 ;
- I:=I+1; _[14]:=_[14]+1; IF I<_[15] THEN _[15]:=I;
- IF I>_[16] THEN _[16]:=I; ;
- UNTIL GOLDSTUECKE[I]>0; _[14]:=_[14]+1; IF I<_[15] THEN _[15]:=I;
- IF I>_[16] THEN _[16]:=I; _[1]:=_[1]+1; ;
- TESTE(GOLDSTUECKE,HILFSARRAY,0,0,I); _[14]:=_[14]+1;
- IF I<_[15] THEN _[15]:=I; IF I>_[16] THEN _[16]:=I; _[27]:=_[27]+1;
- _[1]:=_[1]+1; ;
- END ;
- ; _[20]:=_[20]+1; IF JEDER_ERBT<_[21] THEN _[21]:=JEDER_ERBT;
- IF JEDER_ERBT>_[22] THEN _[22]:=JEDER_ERBT; _[17]:=_[17]+1;
- IF U<_[18] THEN _[18]:=U; IF U>_[19] THEN _[19]:=U; UNTIL(ERGEBNISS_GEFUNDEN
- =FALSE)OR(AKT_ERBE=ANZAHL_ERBEN); _[5]:=_[5]+1;
- IF ANZAHL_ERBEN<_[6] THEN _[6]:=ANZAHL_ERBEN;
- IF ANZAHL_ERBEN>_[7] THEN _[7]:=ANZAHL_ERBEN; _[23]:=_[23]+1;
- IF AKT_ERBE<_[24] THEN _[24]:=AKT_ERBE;
- IF AKT_ERBE>_[25] THEN _[25]:=AKT_ERBE; _[26]:=_[26]+1; ;
- IF ERGEBNISS_GEFUNDEN=FALSE THEN BEGIN _[78] := _[78] + 1 ;
- WRITELN ; WRITE(' Erbe Nr. ',AKT_ERBE,' würde nicht das richtige ');
- _[23]:=_[23]+1; IF AKT_ERBE<_[24] THEN _[24]:=AKT_ERBE;
- IF AKT_ERBE>_[25] THEN _[25]:=AKT_ERBE; ;
- WRITE('Erbe erhalten. Es erbt das Kloster. ') ;
- END ;
- ; _[26]:=_[26]+1;
- END ELSE BEGIN _[79] := _[79] + 1 ;
- WRITELN ; WRITELN(' Eine Aufteilung geht nicht. Das Kloster erbt. ') ;
- END ;
- ;IF _2[5] > _[13] THEN _[13] := _2[5]; _2[5]:=_2[5]-1; END ;
- BEGIN FOR __:= 1 TO ___ DO _[__]:=0; FOR __:= 1 TO ___2 DO _2[__]:=-1;
- _[3]:=1.9E+999;_[4]:=-1.9E+999;_[6]:=1.9E+999;_[7]:=-1.9E+999;
- _[15]:=1.9E+999;_[16]:=-1.9E+999;_[18]:=1.9E+999;_[19]:=-1.9E+999;
- _[21]:=1.9E+999;_[22]:=-1.9E+999;_[24]:=1.9E+999;_[25]:=-1.9E+999;
- _[31]:=1.9E+999;_[32]:=-1.9E+999;_[34]:=1.9E+999;_[35]:=-1.9E+999;
- _[42]:=1.9E+999;_[43]:=-1.9E+999;_[45]:=1.9E+999;_[46]:=-1.9E+999;
- _[48]:=1.9E+999;_[49]:=-1.9E+999;_[51]:=1.9E+999;_[52]:=-1.9E+999;
- _[54]:=1.9E+999;_[55]:=-1.9E+999;_[59]:=1.9E+999;_[60]:=-1.9E+999;
- _[62]:=1.9E+999;_[63]:=-1.9E+999;
- EINGABE ;
- AUFTEILUNG ;
- ;ASSIGN(_f,'A:\TESTFILE.TST\TALER.WRT');
- REWRITE(_f);
- WRITELN(_f,'(c)1989mkbmeersaukleintier');
- WRITELN(_f,'A:\DEMOS.PAS\TALER.PAS');
- WRITELN(_f,'ja');
- WRITELN(_f,'79.0');
- FOR __ := 1 TO ___ DO BEGIN
- STR(_[__],_h);
- WRITELN(_f,_h); END;
- CLOSE(_f);
- WRITELN;WRITELN;
- WRITELN('-> Profile-Testlauf beendet. Werte in A:\TESTFILE.TST\TALER.WRT');
- WRITELN('-> Bitte profile_2.prg starten. ');
- END.
-